HTMLify

index.js
Views: 48 | Author: cody
const grid=document.querySelector(".grid")
let squares=Array.from(document.querySelectorAll('.grid div'));
const score=document.getElementById("score");
const startbtn=document.getElementById('start-btn')
const btnimg=document.getElementById('btnimg');
let count=0;
const width=10;

//defining arrow buttons to use in phones

const leftbtn=document.getElementById('left');
const rightbtn=document.getElementById('right');
const downbtn=document.getElementById('down');
const rotatebtn=document.getElementById('rotate');

//colour
const color=["red","blue","green","purple","yellow"]


//shapes

const lshape = [
    [1, width+1, width*2+1, 2],
    [width, width+1, width+2, width*2+2],
    [1, width+1, width*2+1, width*2],
    [width, width*2, width*2+1, width*2+2]
]

const zshape = [
    [width+1, width+2, width*2 , width*2+1],
    [0, width, width+1, width*2+1],
    [width+1, width+2, width*2 , width*2+1],
    [0, width, width+1, width*2+1],
]

const tshape = [
    [1, width,width+1,width+2],
    [1, width+1, width+2, width*2+1],
    [width, width+1, width+2,width*2+1],
    [1, width, width+1, width*2+1]
]

const oshape = [
    [0, 1, width, width+1],
    [0, 1, width, width+1],
    [0, 1, width, width+1],
    [0, 1, width, width+1]
]

const ishape = [
    [1, width+1, width*2+1, width*3+1],
    [width, width+1, width+2, width+3],
    [1, width+1, width*2+1, width*3+1],
    [width, width+1, width+2, width+3],
]
const theShapes = [lshape, zshape, oshape, tshape, ishape]
 let currentposition=4;
 let currentrotation=0;

 //randomly selecting shapes

let random=Math.floor(Math.random()*theShapes.length)
let currentshape=theShapes[random][currentrotation]

//drawing the shapes

function draw(){
    currentshape.forEach((index)=>{
        squares[currentposition+index].style.background=color[random];
    })
}
draw()

//erasing the shapes

function erase(){
    currentshape.forEach((index)=>{
        squares[currentposition+index].style.background=""
    })
}
function movedown(){
    erase()
    currentposition += width;
    draw()
    stop()
}
 var timer = setInterval(movedown, 1000)

 //stopping the shapes

 function stop(){
     if(currentshape.some(index => squares[currentposition + index + width].classList.contains('freeze'))){
     currentshape.forEach(index => squares[currentposition + index].classList.add('freeze'))

 //start a new shape to fall

     random = Math.floor(Math.random()*theShapes.length)
     currentrotation=0
     currentshape=theShapes[random][currentrotation]
     currentposition=4;
     draw()
     gameOver()
     addScore()
     }
 }
 //function to control the game

 function control(e){
     if(e.keyCode===37){
         moveleft()
     }
     else if(e.keyCode===39){
         moveright()
     }
     else if(e.keyCode===40){
         movedown()
     }
     else if(e.keyCode===32){
        rotate() 
     }
 }
 
 window.addEventListener("keydown",control)

 //controlling shapes

 leftbtn.addEventListener('click',moveleft);
 rightbtn.addEventListener('click',moveright);
 downbtn.addEventListener('click',movedown);
 rotatebtn.addEventListener('click',rotate);

 //function to move left

 function moveleft(){
     erase()
     let leftblockage= currentshape.some(index => (currentposition+index)%width===0)
     let blockage=currentshape.some(index => squares[currentposition+index-1].classList.contains('freeze'));
     
     if(!leftblockage && !blockage){
         currentposition--;
     }
    // currentposition--;
     draw()
 }
 function moveright(){
    erase()
    let rightblockage= currentshape.some(index => (currentposition+index)%width===(width-1))
    let blockage=currentshape.some(index => squares[currentposition+index+1].classList.contains('freeze'));
    
    if(!rightblockage && !blockage){
        currentposition++;
    }
   // currentposition--;
    draw()
}

//to rotate a figure

function rotate(){
    erase()
    currentrotation++;
    if(currentrotation===4){
        currentrotation=0;
    }
    currentshape=theShapes[random][currentrotation]
    draw()
}
//pause button

function pause(){
    if(timer){
        clearInterval(timer)
        timer=null;
        btnimg.src="play.jpg";

    }
    else{
        draw()
        timer=setInterval(movedown,1000);
        btnimg.src="pause.png"
    }
}

startbtn.addEventListener("click",pause)

//for game over

function gameOver(){
    if(currentshape.some(index => squares[currentposition + index].classList.contains('freeze'))){
        score.innerHTML = "Game Over"
        clearInterval(timer)
    }
}
 
// to add Score
function addScore(){
    for(let i=0;i<199; i += width){
        const row = [i ,i+1, i+2, i+3, i+4, i+5, i+6 ,i+7, i+8, i+9];
        console.log(row)

        if(row.every(index => squares[index].classList.contains("freeze"))){
            count +=10
            score.textContent = `score:${count}`
            row.forEach(index =>{
                squares[index].classList.remove("freeze");
                squares[index].style.background = '';
            })
            const squareRemoved = squares.splice(i,width)
            console.log(squareRemoved)
            squares = squareRemoved.concat(squares)
            squares.forEach(square => grid.appendChild(square))
        }
    }
}

Comments